﻿using Newtonsoft.Json;

namespace Fadada.FASC.SDK.DotNetCore.Model
{
    public class RespSignTaskGetDetailInfo
    {
        /// <summary>
        /// 签署任务ID。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "signTaskId",
            Required = Required.Always)]
        public string SignTaskId { get; set; }

        /// <summary>
        /// 签署任务主题。长度最大100个字符。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "signTaskSubject",
            Required = Required.Always)]
        public string SignTaskSubject { get; set; }

        /// <summary>
        /// 签署任务状态：task_created: 任务已创建(签署任务创建成功，但未发起)task_initiated: 任务已发起(签署任务已经发起)
        /// fill_progress: 填写进行中(签署任务正在进行协同填写流程阶段，必填控件尚未填完)fill_completed: 填写已完成(签署任务文档中所有的必填控件均已填写，但文档尚未定稿)
        /// fill_finalizing: 文档定稿中(所有须填写内容都已完成，服务器正在合成pdf文档)fill_finalized: 文档已定稿(文档内容已经确定)
        /// sign_progress: 签署进行中(签署任务正在进行签署流程阶段)sign_completed: 签署已完成(签署任务所有签署方均已签署完成)
        /// task_finished: 任务已结束(签署任务已成功结束)task_canceled: 任务已撤销(签署任务已经被撤销)
        /// task_stopped: 任务异常停止(签署任务已经因为某种原因而停止运行，如因为某方拒填或拒签)
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "signTaskStatus",
            Required = Required.Always)]
        public string SignTaskStatus { get; set; }

        /// <summary>
        /// 文档列表。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "docs",
            Required = Required.AllowNull)]
        public DocInfo[] Docs { get; set; }

        /// <summary>
        /// 附件列表。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "attachs",
            Required = Required.AllowNull)]
        public AttachInfo[] Attachs { get; set; }

        /// <summary>
        /// 填写方列表。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "fillActors",
            Required = Required.AllowNull)]
        public FillActorFour[] FillActors { get; set; }

        /// <summary>
        /// 签署方列表。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "signActors",
            Required = Required.AllowNull)]
        public SignActorFive[] SignActors { get; set; }

        /// <summary>
        /// 抄送人列表。注意：系统不会返回参与方身份隐私详情。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "ccActors",
            Required = Required.AllowNull)]
        public CCActor[] CcActors { get; set; }
    }
}